const { ipcMain, dialog,BrowserWindow } = require('electron')
const fs = require('fs')
const path = require('path')
const isDev = require('electron-is-dev')

// 打开选择目录对话框并遍历目录里的所有文件
ipcMain.on('readDir', (event, arg) => {
    console.log('接收渲染进程传参：', arg)
    dialog.showOpenDialog({
            // 只允许选择文件夹
            properties: ['openDirectory'],
        })
        .then((result) => {
            if (!result.canceled) {
                result.fileList = loadFilesInDir(result.filePaths[0])
            }
            // 将处理结果返回给渲染进程
            event.reply('readDir-reply', result)
        })
})

// 打开新的窗口
ipcMain.on('open_new_win', (event, arg) => {
    // 创建浏览窗口
    const mainWindow = new BrowserWindow({
        width: 400,
        height: 400,
		webPreferences: {
			preload: path.join(__dirname, '../preload.js')
		},
        icon: 'public/yep.ico'
    })
    // 加载项目页面
    // mainWindow.loadURL('http://localhost:3000')

    // 打开DevTools
    // mainWindow.webContents.openDevTools()

    mainWindow.loadURL(
        isDev
            ?'http://localhost:3000/list.html'
            :`file://${path.join(__dirname, '../../build/list.html')}`
        );
    //打开控制台
    mainWindow.webContents.openDevTools()
    
    // 在开发环境和生产环境均可通过快捷键打开devTools
    // 此段代码最好在createMenu()之后，否则在macOS可能导致createMenu()失效。
    // globalShortcut.register('CommandOrControl+Shift+i', function () {
    //     mainWindow.webContents.openDevTools()
    // })
})
// 打开ffmpeg测试窗口
ipcMain.on('open_new_win_ffmpeg', (event, arg) => {
    // 创建浏览窗口
    const mainWindow = new BrowserWindow({
        width: 800,
        height: 800,
		webPreferences: {
			preload: path.join(__dirname, '../preload.js')
		},
        icon: 'public/yep.ico'
    })
    // 加载项目页面
    // mainWindow.loadURL('http://localhost:3000')

    // 打开DevTools
    // mainWindow.webContents.openDevTools()

    mainWindow.loadURL(
        isDev
            ?'http://localhost:3000/ffmpeg.html'
            :`file://${path.join(__dirname, '../../build/ffmpeg.html')}`
        );
    //打开控制台
    mainWindow.webContents.openDevTools()
})
// 递归遍历文件
function loadFilesInDir(dir) {
    let fileList = []
    // 读取目录下全部文件及子目录
    let files = fs.readdirSync(dir)
    for (var i = 0; i < files.length; i++) {
        let filePath = path.join(dir, files[i])
        // 获取信息
        let fileData = fs.statSync(filePath)
        // 判断是文件还是目录
        if (fileData.isFile()) {
            // 如果是文件，则记录下来
            fileList.push(filePath)
        } else {
            // 如果是目录，则递归遍历，并拼接结果
            fileList = fileList.concat(loadFilesInDir(filePath))
        }
    }
    return fileList
}